Overview & Context: Why Standardized Agent Communication Matters
The Problem: You’ve built a brilliant customer support agent using Google ADK. Your partner company built an inventory management agent with AWS Bedrock. Your ops team built a monitoring agent with LangGraph. Now they need to work together. In traditional software, we’d just make API calls. But agents aren’t simple REST endpoints—they have long-running tasks, require authentication, need to discover each other’s capabilities, and exchange multimodal data (text, files, structured data). Every team ends up building custom integration code, and nothing talks to anything else without months of engineering work. The Solution: Agent-to-Agent (A2A) Protocol provides a standardized way for agents from different frameworks and organizations to communicate. Think of it as HTTPS for agent collaboration—a universal language that makes heterogeneous agents interoperable.💡 Key Insight: A2A doesn’t replace orchestration frameworks like CrewAI or LangGraph. Instead, it’s the communication layer that lets agents built with different frameworks collaborate. Use orchestration frameworks for rapid development within your team, expose capabilities via A2A for cross-team and cross-organization integration.Real-World Adoption:
- 150+ organizations including Google, AWS, Microsoft, Salesforce, SAP, ServiceNow
- Transferred to Linux Foundation (June 2025) for vendor-neutral governance
- Production deployments: Tyson Foods/Gordon Food Service (supply chain), Twilio (communications), Salesforce Agentforce customers
A2A Fundamentals: How Agents Discover and Communicate (30 min)
The Core Components
A2A defines four essential building blocks that enable agent interoperability: 1. Agent Cards: Business Cards for Agents Every A2A agent publishes metadata at a well-known URL following RFC 8615:- Capabilities: What skills does this agent offer?
- Authentication: How do I prove I’m authorized?
- Communication preferences: Do you support streaming? What formats?
- Contact information: Who maintains this agent?
openapi.yaml specification for agents—they enable runtime discovery rather than compile-time integration.
2. Tasks: Long-Running Conversations
Unlike REST’s stateless request-response, A2A tasks maintain state across multiple turns:
| Transport | Use Case | Performance | Complexity |
|---|---|---|---|
| JSON-RPC 2.0 over HTTPS | Default, web-compatible | Good | Low |
| gRPC + Protocol Buffers | High-throughput scenarios | Excellent | Medium |
| REST-style HTTP | Resource-oriented teams | Good | Low |
🚀 Production Tip: Start with JSON-RPC over HTTPS. It’s human-readable for debugging, works through corporate firewalls, and handles 99% of use cases. Only move to gRPC if you measure actual performance bottlenecks (thousands of messages/second).
How Agent Discovery Works
Three patterns for finding agents: 1. Well-Known URI (Distributed)⚠️ Common Pitfall: Don’t build a monolithic central registry if you’re just coordinating 3-5 internal agents. Use simple configuration files. Registries add complexity you probably don’t need yet.
Security and Trust in Multi-Agent Systems (20 min)
A2A takes an uncompromising security stance because agents often access sensitive data and make consequential decisions.Transport Security
HTTPS is mandatory in production. No exceptions. TLS 1.2+ minimum, TLS 1.3+ recommended. This eliminates man-in-the-middle attacks and ensures all agent communication is encrypted. If you’re testing locally, you can use HTTP, but production deployments must use HTTPS with valid certificates.Authentication Patterns
A2A supports standard web authentication mechanisms:Authorization at the Skill Level
Authentication proves who you are. Authorization determines what you can do.The Trust Chain Problem
When Agent A calls Agent B which calls Agent C, managing credentials becomes complex:- Valid authentication
- Appropriate authorization
- Audit logging
- Timeout handling
🚀 Production Tip: Use short-lived tokens (30 seconds to 5 minutes) for sensitive operations. Yes, this adds complexity with token refresh logic, but it dramatically reduces the blast radius if credentials leak. For financial transactions or PII access, combine with strong customer authentication (SMS codes, biometrics).
What A2A Doesn’t Solve (Yet)
A2A provides the plumbing for secure communication, but higher-level trust problems remain open:- Economic models: How do agents negotiate pricing? Who pays when A calls B calls C?
- Liability allocation: If a multi-agent system makes an error causing loss, who’s responsible?
- Compliance: How do you satisfy explainability requirements when agents preserve internal opacity?
Implementation with Google ADK (30 min)
Let’s build a practical A2A integration. We’ll create a flight search agent and a hotel booking agent that coordinate to plan travel.Exposing an Agent via A2A
Google ADK makes this ridiculously simple. Here’s a complete flight search agent exposed via A2A:to_a2a() function automatically:
- Generates an Agent Card from your agent definition
- Starts an HTTP server
- Serves the card at
/.well-known/agent-card.json - Handles all A2A protocol message translation
- Provides authentication endpoints if configured
Consuming a Remote A2A Agent
Now let’s build a coordinator agent that uses the flight agent remotely:- HTTP request/response handling
- JSON-RPC message formatting
- Error handling and retries
- Authentication header management
- Task lifecycle management
RemoteA2aAgent acts as a transparent proxy. To Gemini (the LLM), it looks like a local tool. To you (the developer), it looks like a local agent. Under the hood, it’s making A2A protocol calls across the network.
Multi-Framework Integration
Here’s where A2A gets powerful. Let’s use agents from different frameworks:✅ Quick Check: Before moving on, ensure you can:
- Explain what an Agent Card contains and why it matters
- Describe the difference between authentication and authorization in A2A
- Use
to_a2a()to expose an ADK agent via A2A- Use
RemoteA2aAgentto consume an A2A-enabled agent from any framework
Production Considerations and Current Limitations (15 min)
What Works Well Today
Cross-organization collaboration: The Tyson Foods + Gordon Food Service supply chain integration demonstrates A2A’s strength. Two separate companies, different technology stacks, standardized agent communication for sharing product data and leads. Previously, this would require months of custom API development and contract negotiation. Multi-cloud architectures: AWS demonstrated Google ADK agents running on Amazon Bedrock AgentCore Runtime, coordinating with Strands SDK and OpenAI SDK agents through A2A. The protocol genuinely achieves vendor neutrality. Development velocity: When you need to integrate with an external agent, it’s faster to consume their A2A endpoint than to build custom integration code. The protocol handles the boilerplate.Current Challenges and Gaps
1. Protocol Maturity A2A is at version 0.3 (November 2025). Expect:- Continued specification evolution
- Occasional breaking changes
- New features added (gRPC support just arrived in v0.3)
- Limited production war stories and best practices
⚠️ Reality Check: You’re adopting an emerging standard. For mission-critical production systems, plan for the protocol to evolve and budget engineering time for upgrades. For greenfield projects or new initiatives, A2A is a smart bet on the future.2. Higher-Level Orchestration Patterns A2A provides communication primitives (messages, tasks, discovery) but doesn’t define:
- How agents should handle cascading failures
- How to negotiate conflicting objectives
- How to optimize resource allocation across agent teams
- How to implement circuit breakers and backpressure
- A2A Inspector (Google) for message-level debugging
- Distributed tracing IDs in message headers
- Centralized logging aggregation
- Standardized pricing discovery (what does this agent cost to invoke?)
- Billing and settlement (how do costs flow through agent chains?)
- SLA definitions (what response time can I expect?)
- Liability allocation (who’s responsible for errors?)
Best Practices We’ve Learned
Start Simple:- Begin with 2-3 internal agents using A2A before integrating external services
- Use JSON-RPC over HTTPS unless you measure performance issues
- Implement comprehensive logging before hitting production
- Set aggressive timeouts (5-10 seconds for agent calls unless you know they’re slow)
- Implement retries with exponential backoff
- Use circuit breakers to prevent cascading failures
- Make operations idempotent (safe to retry)
- Use short-lived tokens (< 5 minutes) for sensitive operations
- Implement rate limiting on agent endpoints
- Log all agent interactions with unique request IDs
- Apply principle of least privilege (grant minimum necessary permissions)
Hands-On Practice: Building a Multi-Agent Travel System (15 min)
Objective: Build a coordinator agent that uses remote A2A agents for flight search and hotel booking.Exercise Setup
Task 1: Expose a Currency Converter via A2A (10 min)
We’ve provided a working currency converter agent. Your job: expose it via A2A.- Agent Card accessible at
http://localhost:8002/.well-known/agent-card.json - Card includes currency conversion skill
- Can send test message via A2A Inspector
Task 2: Build the Travel Coordinator (20 min)
Create a coordinator that uses three remote agents:- Coordinator successfully calls all three agents
- Response includes flight options, hotel options, and currency conversion
- Total execution time < 10 seconds
- Handles case where one agent is unavailable